// 表格通用参数
const tableCommonparams = {
  filed: "", // 必填，展示字段
  tips: "", // 选填，默认为span
  type: "span", // 选填，默认为span
  label: "", // 必填，表头标题
  style: "", // <Object> 内联样式
  align: "left", // 表格列对齐方式
  renderFn: "", // <Function> 渲染函数
  formatFn: "", // <Function> 格式化输出的函数，第一个参数为值，第二个参数为行row
  width: "110", // 列最小宽度
  staticWidth: "", // 列固定宽度
  hide: () => false
}

// type 为 time 专有参数
const timeParams = {
  timeFormat: "YYYY-MM-DD HH:mm:ss" // 显示的时间格式 默认YYYY-MM-DD HH:mm:ss
}

// link组件专有参数
const linkComponentParams = {
  router: "" // vue-router 路由对象
}

// 图片组件专有参数
const imgComponentParams = {
  needPreviewImg: "", // 是否可预览图片
  previewFiled: "" // 图片预览字段
}

// 状态组件专有参数
const tagComponentParams = {
  colorList: {} // <Object> 状态码：颜色的字典
}

const TABLE_JSON: any = {
  ...tableCommonparams,
  ...timeParams,
  ...linkComponentParams,
  ...imgComponentParams,
  ...tagComponentParams
}

// 所有配置需要格式化为定义的参数，未定义的参数直接过滤
export default function formatTableJson(arr: any) {
  let formatArr: any = []
  let keys = Object.keys(TABLE_JSON)
  arr.forEach((el: any) => {
    let obj: any = {}
    keys.forEach((key) => {
      obj[key] = el[key] || TABLE_JSON[key]
    })
    formatArr.push(obj)
  })
  return formatArr
}
